Presentation: Tweet"Erjang - A JVM-based Erlang VM"
Over the last few years, I have been meeting "Erlang people" more and more often, and I am getting the impression that they have a magical ability to reason intuitively about concurrent systems in a way that I have not. It corresponds somewhat to the way we "object heads" think intuitively about classes and objects - just in terms of processes. That bothered me, so I wanted to learn Erlang. Being a language implementor, the most obvious way to do that is to just go ahead and implement an Erlang VM, right?
The result of this "little exercise" is Erjang, an open-source JVM-based Erlang VM. It has turned into a non-trivial project, Erjang is now 50k lines of Java code, it runs substantial erlang programs, including booting OTP so you can use the Eshell, it self-hosts the erlang compiler (erlc) and tcp/ip functionality works.
In this talk, I would like to take you through some of the issues, problems and solutions that I saw going through that exercise. And specifically, I will take you through what I think is wrong with "Java concurrency", and in which situations the conceptual model in Erlang is better. In Erlang you model systems with Actors; but how do we evolve from object-heads to actor-heads? How do we get to a point where processes are as intuitive and natural as objects and classes?
In short: I will explain how Erjang works, what I learned along the way, and demonstrate that Erjang runs well enough to be obviously useful.
Keywords: Core, JVM, Concurrency, Scalability, Alternative languages
Target Audience: Java developers [preferrably ones that have felt the pain of concurrency]
Download slides